/**
 * 获取整个html页面的json数据
 * @returns {Array}
 */
function getPageJson() {
    var pages = $('.page');
    var pageJson = [];
    $.each(pages, function () {
        //将html中的数据提取成json格式的数组
        var rowJson = [];
        var rows = $(this).find('.p');
        for (var i = 0; i < rows.length; i++) {
            var topValue = $(rows[i]).css('top');
            var leftValue = $(rows[i]).css('left');
            var id = rows[i].id;
            var textValue = $(rows[i]).text();
            var topFloatValue = getFloatValue(topValue);
            var leftFloatValue = getFloatValue(leftValue);
            rowJson.push({
                id: id,
                topFloatValue: topFloatValue,
                leftFloatValue: leftFloatValue,
                textValue: textValue
            });
        }
        //根据top值对json数组进行排序，默认为升序
        rowJson.sort(sequenceTop);

        //对json数组进行分组，分出行数据
        var map = {},
            groupJson = [];
        for (var i = 0; i < rowJson.length; i++) {
            var row = rowJson[i];
            //如果为undefined，就添加一个以topFloatValue为键的数组，用来存放行数据
            if (map[row.topFloatValue] == undefined) {
                groupJson.push({trKey: row.topFloatValue, trData: [row]});
                //为map[row.topFloatValue]添加值，防止添加重复的键
                map[row.topFloatValue] = row;
            } else {
                for (var j = 0; j < groupJson.length; j++) {
                    var groupRow = groupJson[j];
                    //如果groupJson数组中已经存在以topFloatValue为键的数组，则在此行中添加行数据
                    if (row.topFloatValue == groupRow.trKey) {
                        groupRow.trData.push(row);
                    }
                }
            }
        }

        //根据left值对json数组再次进行排序，默认为升序
        for (var t = 0; t < groupJson.length; t++) {
            var trData = groupJson[t].trData;
            if (trData.length > 1) {
                trData.sort(sequenceLeft);
            }
        }

        //将分组后的json添加进pageJson中
        var pageId = this.id;
        pageJson.push({pageId: pageId, pageData: groupJson});
    });
    return pageJson;
}

/**
 * 根据top值进行排序的方法
 * @param {Object} a
 * @param {Object} b
 */
function sequenceTop(a, b) {
    return a.topFloatValue - b.topFloatValue;
}

/**
 * 根据left值进行排序的方法
 * @param {Object} a
 * @param {Object} b
 */
function sequenceLeft(a, b) {
    return a.leftFloatValue - b.leftFloatValue;
}

/**
 * 获取绝对定位的数值
 * @param {Object} value
 */
function getFloatValue(value) {
    var pxIndex = value.lastIndexOf('px');
    var strValue = value.substring(0, pxIndex);
    var floatValue = parseFloat(strValue);
    return floatValue;
}
/**
 * 将解析的json数据再次进行处理并添加到内嵌框架的table中
 */
function intoTable() {
    var table = table_iframe.window.getTable();
    //将table中的html节点清空
    table.find('tbody').html('');
    //获取iframe中pdfhtml文件中的json格式数据
    var pageJson = text_iframe.window.getPageJson();
    var maxLengths = [];
    for (var t = 0; t < pageJson.length; t++) {
        var pageData = pageJson[t].pageData;
        //计算出trData中length最大的值，作为列的最大值
        var lengths = [];
        for (var k = 0; k < pageData.length; k++) {
            lengths.push(pageData[k].trData.length);
        }
        var maxLength = Math.max.apply(null, lengths);
        maxLengths.push(maxLength);
    }
    var finalMaxLength = Math.max.apply(null, maxLengths);
    for (var t = 0; t < pageJson.length; t++) {
        var pageData = pageJson[t].pageData;
        for (var i = 0; i < pageData.length; i++) {
            var trData = pageData[i].trData;
            var tdHtml = '';
            for (var j = 0; j < finalMaxLength; j++) {
                //如果length<=1，一般为无用数据，排除掉
                if (trData.length <= 1) {
                    continue;
                }
                //如果行数据下标的值 >=最大length时，才会使用下标取textValue，否则textValue值为''
                var textValue = '';
                if (j <= trData.length - 1) {
                    textValue = trData[j].textValue;
                }
                tdHtml += '<td>' + textValue + '</td>';
            }
            //如果是有用的数据，才会添加到table中
            if (trData.length > 1) {
                var trHtml = '<tr>' + tdHtml + '</tr>';
                table.find('tbody').append(trHtml);
            }
        }
    }

    /**
     * 获取整个html页面的json数据
     * @returns {Array}
     */
    function getPageJson() {
        var pages = $('.page');
        var pageJson = [];
        $.each(pages, function () {
            //将html中的数据提取成json格式的数组
            var rowJson = [];
            var rows = $(this).find('.p');
            for (var i = 0; i < rows.length; i++) {
                var topValue = $(rows[i]).css('top');
                var leftValue = $(rows[i]).css('left');
                var id = rows[i].id;
                var textValue = $(rows[i]).text();
                var topFloatValue = getFloatValue(topValue);
                var leftFloatValue = getFloatValue(leftValue);
                rowJson.push({
                    id: id,
                    topFloatValue: topFloatValue,
                    leftFloatValue: leftFloatValue,
                    textValue: textValue
                });
            }
            //根据top值对json数组进行排序，默认为升序
            rowJson.sort(sequenceTop);

            //对json数组进行分组，分出行数据
            var map = {},
                groupJson = [];
            for (var i = 0; i < rowJson.length; i++) {
                var row = rowJson[i];
                //如果为undefined，就添加一个以topFloatValue为键的数组，用来存放行数据
                if (map[row.topFloatValue] == undefined) {
                    groupJson.push({trKey: row.topFloatValue, trData: [row]});
                    //为map[row.topFloatValue]添加值，防止添加重复的键
                    map[row.topFloatValue] = row;
                } else {
                    for (var j = 0; j < groupJson.length; j++) {
                        var groupRow = groupJson[j];
                        //如果groupJson数组中已经存在以topFloatValue为键的数组，则在此行中添加行数据
                        if (row.topFloatValue == groupRow.trKey) {
                            groupRow.trData.push(row);
                        }
                    }
                }
            }

            //根据left值对json数组再次进行排序，默认为升序
            for (var t = 0; t < groupJson.length; t++) {
                var trData = groupJson[t].trData;
                if (trData.length > 1) {
                    trData.sort(sequenceLeft);
                }
            }

            //将分组后的json添加进pageJson中
            var pageId = this.id;
            pageJson.push({pageId: pageId, pageData: groupJson});
        });
        return pageJson;
    }

    /**
     * 根据top值进行排序的方法
     * @param {Object} a
     * @param {Object} b
     */
    function sequenceTop(a, b) {
        return a.topFloatValue - b.topFloatValue;
    }

    /**
     * 根据left值进行排序的方法
     * @param {Object} a
     * @param {Object} b
     */
    function sequenceLeft(a, b) {
        return a.leftFloatValue - b.leftFloatValue;
    }

    /**
     * 获取绝对定位的数值
     * @param {Object} value
     */
    function getFloatValue(value) {
        var pxIndex = value.lastIndexOf('px');
        var strValue = value.substring(0, pxIndex);
        var floatValue = parseFloat(strValue);
        return floatValue;
    }

    /**
     * 将解析的json数据再次进行处理并添加到内嵌框架的table中
     */
    function intoTable() {
        var table = table_iframe.window.getTable();
        //将table中的html节点清空
        table.find('tbody').html('');
        //获取iframe中pdfhtml文件中的json格式数据
        var pageJson = text_iframe.window.getPageJson();
        var maxLengths = [];
        for (var t = 0; t < pageJson.length; t++) {
            var pageData = pageJson[t].pageData;
            //计算出trData中length最大的值，作为列的最大值
            var lengths = [];
            for (var k = 0; k < pageData.length; k++) {
                lengths.push(pageData[k].trData.length);
            }
            var maxLength = Math.max.apply(null, lengths);
            maxLengths.push(maxLength);
        }
        var finalMaxLength = Math.max.apply(null, maxLengths);
        for (var t = 0; t < pageJson.length; t++) {
            var pageData = pageJson[t].pageData;
            for (var i = 0; i < pageData.length; i++) {
                var trData = pageData[i].trData;
                var tdHtml = '';
                for (var j = 0; j < finalMaxLength; j++) {
                    //如果length<=1，一般为无用数据，排除掉
                    if (trData.length <= 1) {
                        continue;
                    }
                    //如果行数据下标的值 >=最大length时，才会使用下标取textValue，否则textValue值为''
                    var textValue = '';
                    if (j <= trData.length - 1) {
                        textValue = trData[j].textValue;
                    }
                    tdHtml += '<td>' + textValue + '</td>';
                }
                //如果是有用的数据，才会添加到table中
                if (trData.length > 1) {
                    var trHtml = '<tr>' + tdHtml + '</tr>';
                    table.find('tbody').append(trHtml);
                }
            }
        }
    }
}